package com.itfenghuang.day02;


import sun.security.pkcs11.wrapper.CK_ATTRIBUTE;

public class A04_抽象类Abstract {
//        1.抽象类案例
//                 需求:
//                定义猫类   属性:颜色   姓名   年龄   行为:吃(猫吃鱼)
//                定义狗类   属性:颜色   姓名   年龄    行为:吃(狗吃肉)
//        2.什么是抽象类?
//                包含抽象方法的类
//                    格式:abstract class 类名{}
//        3.什么是抽象方法
//                没有方法体,并且被abstract修饰的方法
//                格式:访问修饰符  abstract public void 方法名()
//        4.抽象类自身的特点
//                1)抽象类不能实例化(创建对象)
//                2)抽象类中的抽象方法不能私有化
//                3)抽象类中可以有抽象方法也可以有普通方法
//                4)抽象类的子类如果子类是普通类name必须重写抽象类中的抽象方法,否则子类必须是抽象类
//        5.抽象类成员特点:
//                    成员变量:可以有变量,也可以有常量
//                    成员方法:可以是抽象方法,也可以是普通方法
//                    构造方法:有构造方法

//              注意   抽象类存在的意义就是让子类去实现他
    public static void main(String[] args) {
//        Animal animal = new Animal();
        Dog1 dog1 = new Dog1();
        dog1.eat();
        Cat cat = new Cat();
        cat.age=18;
        cat.eat();
    }
}
abstract class Animal{
    public String color;
    public String name;
    public int  age;

    public abstract void eat();
}
class Dog1 extends Animal{

    @Override
    public void eat() {
        System.out.println("狗吃肉");
    }
}
class Cat extends Animal{

    @Override
    public void eat() {
        System.out.println("猫吃鱼"+age);
    }
}